home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / MediaMonkey 3.1.0.1256 / MediaMonkey_3.1.0.1256.exe / {app} / Scripts / ExportM3Us.vbs < prev    next >
Text File  |  2009-03-04  |  3KB  |  115 lines

  1. ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2. ' This file can be replaced  in one of the future versions,
  3. ' so please if you want to modify it, make  a copy, do your
  4. ' modifications  in that copy and  change Scripts.ini  file 
  5. ' appropriately. 
  6. ' If you do not do this, you will lose all  your changes in
  7. ' this script when you install a new version of MediaMonkey
  8. ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  9.  
  10. Option Explicit     ' report undefined variables, ...
  11.  
  12. ' SDB variable is connected to MediaMonkey application object
  13.  
  14. ' Recursively process all playlists
  15. Sub ReadPlaylists( playlists, plst, prefix)
  16.   Dim items
  17.   Set items = plst.ChildPlaylists
  18.  
  19.   If prefix<>"" Then
  20.     prefix = prefix & " - "
  21.   End If
  22.  
  23.   Dim i, newplst, title
  24.   For i=0 To items.Count-1
  25.     Set newplst = items.Item(i)
  26.     title = prefix & newplst.Title
  27.     If Not playlists.exists(title) Then
  28.       playlists.Add title, newplst
  29.     End If
  30.     ReadPlaylists playlists, newplst, title
  31.   Next
  32. End Sub
  33.  
  34. Sub ExportM3Us
  35.   ' Open inifile and get last used directory
  36.   Dim iniF
  37.   Set iniF = SDB.IniFile
  38.  
  39.   ' Let user select the output path
  40.   Dim path
  41.   path = iniF.StringValue( "Scripts", "LastExportM3UsDir")
  42.  
  43.   path = SDB.SelectFolder( path, SDB.Localize( "Select where to export all M3U files."))
  44.  
  45.   If path="" Then
  46.     Exit Sub
  47.   End If
  48.  
  49.   If Right( path, 1)<>"\" Then
  50.     path = path & "\"
  51.   End If
  52.  
  53.   ' Write selected directory to the ini file
  54.   iniF.StringValue( "Scripts", "LastExportM3UsDir") = path
  55.   Set iniF = Nothing
  56.  
  57.   ' Connect to the FileSystemObject
  58.   Dim fso
  59.   Set fso = SDB.Tools.FileSystem
  60.  
  61.   Dim playlists
  62.   Set playlists = CreateObject("Scripting.Dictionary")
  63.  
  64.   ' Use progress to notify user about the current action
  65.   Dim Progress, ExpText
  66.   Set Progress = SDB.Progress
  67.   ExpText = SDB.Localize("Exporting...")
  68.   Progress.Text = ExpText
  69.  
  70.   ' Prepare a list of all playlists
  71.   ReadPlaylists playlists, SDB.PlaylistByTitle( ""), ""
  72.  
  73.   ' Go through the list and export each playlist
  74.   Dim i, iTrck, plst, fout, plsts, titles, title, tracks, trck, ln, tlen, art, tit
  75.   plsts = playlists.Items
  76.   titles = playlists.Keys
  77.   Progress.MaxValue = playlists.count
  78.   For i=0 To playlists.Count-1
  79.     Set plst = plsts(i)
  80.     Set tracks = plst.Tracks
  81.     title = Titles(i)
  82.     Progress.Text = ExpText & " (" & title & ")"
  83.     If tracks.Count>0 Then
  84.       Set fout = fso.CreateTextFile( path & fso.CorrectFilename(title) & ".m3u", True)
  85.       fout.WriteLine "#EXTM3U"
  86.       For iTrck=0 To tracks.Count-1
  87.         Set trck = tracks.Item(iTrck)
  88.         ln = "#EXTINF:"
  89.         tlen = trck.SongLength
  90.         If tlen>0 Then
  91.           ln = ln & tlen \ 1000 & ","
  92.         Else
  93.           ln = ln & "-1,"
  94.         End If
  95.         art = trck.ArtistName
  96.         tit = trck.Title
  97.         If art<>"" Then
  98.           If tit<>"" Then
  99.             ln = ln & art & " - " & tit
  100.           Else
  101.             ln = ln & art
  102.           End If
  103.         Else
  104.           If tit<>"" then
  105.             ln = ln & tit
  106.           End If
  107.         End If
  108.         fout.WriteLine ln 
  109.         fout.WriteLine trck.Path
  110.       Next
  111.       fout.Close
  112.     End If
  113.     Progress.Value = i+1
  114.   Next
  115. End Sub